在 Swagger 中管理 API 版本可以幫助你清楚地維護多個版本的 API,同時為用戶提供明確的使用指引。
在 URL 中明確指定版本號是一種非常常見的做法。通常,你會在 API 路徑中包含版本號,比如 v1
、v2
等。
範例:
https://api.example.com/v1/users
https://api.example.com/v2/users
在 Swagger 中,你可以使用 basePath
或 servers
屬性指定 API 的版本號:
openapi: 3.0.0
info:
title: Example API
version: 1.0.0
servers:
- url: https://api.example.com/v1
透過這種方式,Swagger 文件將自動關聯到指定的 API 版本。
你可以使用 HTTP 請求標頭來傳遞版本資訊,例如 Accept
或自訂的 X-Version
請求標頭。
範例:
GET /users
Accept: application/vnd.example.v1+json
(透過 Accept
標頭指定版本)X-Version: 1
(使用自訂標頭)在 Swagger 中,可以透過 parameters
欄位定義這些標頭資訊:
openapi: 3.0.0
info:
title: Example API
version: 1.0.0
paths:
/users:
get:
summary: Get Users
parameters:
- in: header
name: X-Version
schema:
type: string
required: true
description: API Version
透過查詢參數傳遞版本號也是一種常見的方式,例如 ?version=1
。
範例:
GET /users?version=1
你可以在 Swagger 中透過 parameters
欄位定義查詢參數:
openapi: 3.0.0
info:
title: Example API
version: 1.0.0
paths:
/users:
get:
summary: Get Users
parameters:
- in: query
name: version
schema:
type: string
required: true
description: API Version
你還可以為每個 API 版本生成單獨的 Swagger 文件,並為每個文件配置不同的版本資訊。這樣做可以讓每個 API 版本都有獨立的文件。
範例:
swagger-v1.yaml
(API V1 文件)swagger-v2.yaml
(API V2 文件)每個文件中的 info
欄位下的 version
會指向不同的 API 版本。
如果你希望在同一個 Swagger 文件中維護多個版本的 API,可以使用 tags
來區分 API 版本,並在描述中明確標註。
範例:
openapi: 3.0.0
info:
title: Example API
version: 1.0.0
paths:
/users:
get:
tags:
- v1
summary: Get Users (v1)
post:
tags:
- v2
summary: Create Users (v2)
在這種情況下,API 的不同版本會根據 tags
標籤在 Swagger UI 中分組顯示。
tags
可以幫助你在同一個 Swagger 文件中區分不同的版本。選擇合適的版本管理方式取決於你的 API 設計和使用場景。